package cipher.util;


public class CipherConst {

	public static int kBufferSize = 8192;
	public static int buff_offset = 16;
	public static int enc_kBufferSize = kBufferSize+buff_offset;
	public static int COMMON_CIPHER   = 2;
	
	
	
	/**
	 * 복호화된 길이 csize가 있는데 덧붙이고 싶다. 마지막 블록의 위치는?
	 * @param decoded_size
	 * @return
	 */
	public static long getDecodedLastBlockPosition(long decoded_size) {
		long factor = (long) decoded_size / kBufferSize;
		return (factor * kBufferSize);
	}
	/**
	 * 암호화 된 길이 csize 가 있는데 덧붙여서 하고 싶다..마지막 블록이 있는 위치는?
	 * @param encoded_size
	 * @return
	 */
	public static long getEncodedLastBlockPosition(long encoded_size) {
		long factor = (long) encoded_size / (enc_kBufferSize);
		return (factor * (enc_kBufferSize));
	}
	
	/**
	 * 복회된 길이 csize는 암호화된 얼만큼의 길이를 복호화한것일까?
	 * @param decode_block_position
	 * @return
	 */
	public static long convert2encodedBlockPosition(long decode_block_position){
		long block = decode_block_position / kBufferSize;
		return block * (enc_kBufferSize);
	}
	/**
	 * 암호화된 길이 csize는 원래 길이 얼만큼을 암호화한것인가?
	 * @param encode_block_position
	 * @return
	 */
	public static long convert2decodedBlockPosition(long encode_block_position){
		long block = encode_block_position / (enc_kBufferSize);
		return block * kBufferSize;
	}
	/**
	 *  fsize 를 암호화 하면 얼마큼의 길이로 변환이 될까?
	 * @param fsize
	 * @return
	 */
	public static long getEcodeFullValue(long fsize){
		long factor = fsize / kBufferSize;
		long bsize = factor * (enc_kBufferSize);
		long z = fsize - (factor*kBufferSize);
		if(z==0){
			return bsize;
		}else{
			return bsize +((int) (z) / buff_offset) * buff_offset + buff_offset;
		}
	}
		
}
